TypeScriptã®'using'宣èšã«ãã確å®ãªãªãœãŒã¹ç®¡çãæ¢ããå¹ççã§ä¿¡é Œæ§ã®é«ãã¢ããªåäœãä¿èšŒããŸããå®è·µäŸãšãã¹ããã©ã¯ãã£ã¹ã解説ã
TypeScriptã®using宣èšïŒå ç¢ãªã¢ããªã±ãŒã·ã§ã³ã®ããã®ææ°ãªãœãŒã¹ç®¡ç
çŸä»£ã®ãœãããŠã§ã¢éçºã«ãããŠãå¹ççãªãªãœãŒã¹ç®¡çã¯å
ç¢ã§ä¿¡é Œæ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã«äžå¯æ¬ ã§ãããªãœãŒã¹ã®ãªãŒã¯ã¯ãããã©ãŒãã³ã¹ã®äœäžãäžå®å®æ§ãããã«ã¯ã¯ã©ãã·ã¥ã«ã€ãªããå¯èœæ§ããããŸããTypeScriptã¯ããã®åŒ·åãªåä»ããšææ°ã®èšèªæ©èœã«ããããªãœãŒã¹ã广çã«ç®¡çããããã®ããã€ãã®ã¡ã«ããºã ãæäŸããŸãããã®äžã§ããusing
宣èšã¯ã確å®ãªãªãœãŒã¹ç Žæ£ã®ããã®åŒ·åãªããŒã«ãšããŠéç«ã£ãŠããããšã©ãŒãçºçãããã©ããã«é¢ãããããªãœãŒã¹ãè¿
éãã€äºæž¬ã©ããã«è§£æŸãããããšãä¿èšŒããŸãã
'Using'宣èšãšã¯ïŒ
TypeScriptã®using
宣èšã¯ãæè¿ã®ããŒãžã§ã³ã§å°å
¥ãããããªãœãŒã¹ã®ç¢ºå®çãã¡ã€ãã©ã€ãŒãŒã·ã§ã³ãæäŸããèšèªæ§æèŠçŽ ã§ããããã¯æŠå¿µçã«C#ã®using
ã¹ããŒãã¡ã³ããJavaã®try-with-resources
ã¹ããŒãã¡ã³ãã«äŒŒãŠããŸããäžæ žãšãªãèãæ¹ã¯ãusing
ã§å®£èšããã倿°ã¯ãäŸå€ãã¹ããŒãããå Žåã§ãããã®å€æ°ãã¹ã³ãŒãå€ã«åºããšãã«[Symbol.dispose]()
ã¡ãœãããèªåçã«åŒã³åºããããšãããã®ã§ããããã«ããããªãœãŒã¹ãè¿
éãã€äžè²«ããŠè§£æŸãããããšãä¿èšŒãããŸãã
æ¬è³ªçã«ãusing
宣èšã¯IDisposable
ã€ã³ã¿ãŒãã§ãŒã¹ãå®è£
ããïŒããæ£ç¢ºã«ã¯[Symbol.dispose]()
ãšããã¡ãœãããæã€ïŒä»»æã®ãªããžã§ã¯ãã§åäœããŸãããã®ã€ã³ã¿ãŒãã§ãŒã¹ã¯åºæ¬çã«ããªããžã§ã¯ããä¿æãããªãœãŒã¹ãè§£æŸãã責任ãæã€åäžã®ã¡ãœãã[Symbol.dispose]()
ãå®çŸ©ããŸããusing
ãããã¯ãæ£åžžã«ããŸãã¯äŸå€ã«ãã£ãŠçµäºãããšã[Symbol.dispose]()
ã¡ãœãããèªåçã«åŒã³åºãããŸãã
ãªã'Using'宣èšã䜿çšããã®ãïŒ
ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãæåã®try...finally
ãããã¯ã«äŸåãããããªåŸæ¥ã®ãªãœãŒã¹ç®¡çæè¡ã¯ãç¹å®ã®ç¶æ³ã§ã¯çæ³çãšã¯èšããŸãããã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã¯é確å®çã§ããããªãœãŒã¹ããã€è§£æŸãããããæ£ç¢ºã«ç¥ãããšã¯ã§ããŸãããæåã®try...finally
ãããã¯ã¯ããã確å®çã§ã¯ãããŸãããç¹ã«è€æ°ã®ãªãœãŒã¹ãæ±ãå Žåã«åé·ã§ãšã©ãŒãçºçãããããªãå¯èœæ§ããããŸãã'Using'宣èšã¯ãããã¯ãªãŒã³ã§ãããç°¡æœã§ãããä¿¡é Œæ§ã®é«ãä»£æ¿ææ®µãæäŸããŸãã
Using宣èšã®å©ç¹
- 確å®çãã¡ã€ãã©ã€ãŒãŒã·ã§ã³ïŒãªãœãŒã¹ãå¿ èŠãªããªã£ãæç¹ã§æ£ç¢ºã«è§£æŸãããããããªãœãŒã¹ãªãŒã¯ãé²ããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžãããŸãã
- ç°¡çŽ åããããªãœãŒã¹ç®¡çïŒ
using
宣èšã¯å®åçãªã³ãŒããåæžããã³ãŒããããã¯ãªãŒã³ã§èªã¿ãããããŸãã - äŸå€å®å šæ§ïŒäŸå€ãã¹ããŒãããå Žåã§ããªãœãŒã¹ãè§£æŸãããããšãä¿èšŒãããããããšã©ãŒã·ããªãªã§ã®ãªãœãŒã¹ãªãŒã¯ãé²ããŸãã
- ã³ãŒãã®å¯èªæ§åäžïŒ
using
宣èšã¯ãã©ã®å€æ°ãç Žæ£ããå¿ èŠã®ãããªãœãŒã¹ãä¿æããŠããããæç¢ºã«ç€ºããŸãã - ãšã©ãŒãªã¹ã¯ã®äœæžïŒç Žæ£ããã»ã¹ãèªååããããšã§ã
using
宣èšã¯ãªãœãŒã¹ã®è§£æŸãå¿ãããªã¹ã¯ãæžãããŸãã
'Using'宣èšã®äœ¿ãæ¹
Using宣èšã®å®è£ ã¯ç°¡åã§ãã以äžã«åºæ¬çãªäŸã瀺ããŸãïŒ
class MyResource {
[Symbol.dispose]() {
console.log("Resource disposed");
}
}
{
using resource = new MyResource();
console.log("Using resource");
// Use the resource here
}
// Output:
// Using resource
// Resource disposed
ãã®äŸã§ã¯ãMyResource
ã¯[Symbol.dispose]()
ã¡ãœãããå®è£
ããŠããŸããusing
宣èšã«ããããããã¯å
ã§ãšã©ãŒãçºçãããã©ããã«é¢ãããããããã¯ãæããéã«ãã®ã¡ãœãããåŒã³åºãããããšãä¿èšŒãããŸãã
IDisposableãã¿ãŒã³ã®å®è£
'using'宣èšã䜿çšããã«ã¯ãIDisposable
ãã¿ãŒã³ãå®è£
ããå¿
èŠããããŸããããã«ã¯ããªããžã§ã¯ããä¿æãããªãœãŒã¹ãè§£æŸãã[Symbol.dispose]()
ã¡ãœãããæã€ã¯ã©ã¹ãå®çŸ©ããããšãå«ãŸããŸãã
以äžã¯ããã¡ã€ã«ãã³ãã«ã®ç®¡çæ¹æ³ã瀺ãããã詳现ãªäŸã§ãïŒ
import * as fs from 'fs';
class FileHandler {
private fileDescriptor: number;
private filePath: string;
constructor(filePath: string) {
this.filePath = filePath;
this.fileDescriptor = fs.openSync(filePath, 'r+');
console.log(`File opened: ${filePath}`);
}
[Symbol.dispose]() {
if (this.fileDescriptor) {
fs.closeSync(this.fileDescriptor);
console.log(`File closed: ${this.filePath}`);
this.fileDescriptor = 0; // Prevent double disposal
}
}
read(buffer: Buffer, offset: number, length: number, position: number): number {
return fs.readSync(this.fileDescriptor, buffer, offset, length, position);
}
write(buffer: Buffer, offset: number, length: number, position: number): number {
return fs.writeSync(this.fileDescriptor, buffer, offset, length, position);
}
}
// Example Usage
const filePath = 'example.txt';
fs.writeFileSync(filePath, 'Hello, world!');
{
using file = new FileHandler(filePath);
const buffer = Buffer.alloc(13);
file.read(buffer, 0, 13, 0);
console.log(`Read from file: ${buffer.toString()}`);
}
console.log('File operations complete.');
fs.unlinkSync(filePath);
ãã®äŸã§ã¯ïŒ
FileHandler
ã¯ãã¡ã€ã«ãã³ãã«ãã«ãã»ã«åãã[Symbol.dispose]()
ã¡ãœãããå®è£ ããŠããŸãã[Symbol.dispose]()
ã¡ãœããã¯fs.closeSync()
ã䜿çšããŠãã¡ã€ã«ãã³ãã«ãéããŸããusing
宣èšã«ããããã¡ã€ã«æäœäžã«äŸå€ãçºçããå Žåã§ãããããã¯ãæããéã«ãã¡ã€ã«ãã³ãã«ãéããããããšãä¿èšŒãããŸããusing
ãããã¯ãå®äºããåŸãã³ã³ãœãŒã«ã®åºåããã¡ã€ã«ã®ç Žæ£ãåæ ããŠããããšãããããŸãã
'Using'宣èšã®ãã¹ã
è€æ°ã®ãªãœãŒã¹ã管çããããã«using
宣èšããã¹ãããããšãã§ããŸãïŒ
class Resource1 {
[Symbol.dispose]() {
console.log("Resource1 disposed");
}
}
class Resource2 {
[Symbol.dispose]() {
console.log("Resource2 disposed");
}
}
{
using resource1 = new Resource1();
using resource2 = new Resource2();
console.log("Using resources");
// Use the resources here
}
// Output:
// Using resources
// Resource2 disposed
// Resource1 disposed
using
宣èšããã¹ãããå ŽåããªãœãŒã¹ã¯å®£èšãããé åºãšã¯éã®é åºã§ç Žæ£ãããŸãã
ç Žæ£äžã®ãšã©ãŒåŠç
ç Žæ£äžã«çºçããå¯èœæ§ã®ãããšã©ãŒãåŠçããããšãéèŠã§ããusing
宣èšã¯[Symbol.dispose]()
ãåŒã³åºãããããšãä¿èšŒããŸãããã¡ãœããèªäœã«ãã£ãŠã¹ããŒãããäŸå€ã¯åŠçããŸããããããã®ãšã©ãŒãåŠçããããã«ã[Symbol.dispose]()
ã¡ãœããå
ã§try...catch
ãããã¯ã䜿çšã§ããŸãã
class RiskyResource {
[Symbol.dispose]() {
try {
// Simulate a risky operation that might throw an error
throw new Error("Disposal failed!");
} catch (error) {
console.error("Error during disposal:", error);
// Log the error or take other appropriate action
}
}
}
{
using resource = new RiskyResource();
console.log("Using risky resource");
}
// Output (might vary depending on error handling):
// Using risky resource
// Error during disposal: [Error: Disposal failed!]
ãã®äŸã§ã¯ã[Symbol.dispose]()
ã¡ãœããããšã©ãŒãã¹ããŒããŸããã¡ãœããå
ã®try...catch
ãããã¯ããšã©ãŒããã£ããããŠã³ã³ãœãŒã«ã«èšé²ãããšã©ãŒãäŒæããŠã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãã·ã¥ããå¯èœæ§ãé²ããŸãã
'Using'宣èšã®äžè¬çãªäœ¿çšäŸ
Using宣èšã¯ãã¬ããŒãžã³ã¬ã¯ã¿ã«ãã£ãŠèªåçã«ç®¡çãããªããªãœãŒã¹ã管çããå¿ èŠãããã·ããªãªã§ç¹ã«åœ¹ç«ã¡ãŸããäžè¬çãªäœ¿çšäŸã«ã¯ä»¥äžã®ãããªãã®ããããŸãïŒ
- ãã¡ã€ã«ãã³ãã«ïŒäžèšã®äŸã§ç€ºããããã«ãusing宣èšã¯ãã¡ã€ã«ãã³ãã«ãè¿ éã«éããããããšãä¿èšŒãããã¡ã€ã«ã®ç ŽæããªãœãŒã¹ãªãŒã¯ãé²ããŸãã
- ãããã¯ãŒã¯æ¥ç¶ïŒusing宣èšã䜿çšããŠãäžèŠã«ãªã£ããããã¯ãŒã¯æ¥ç¶ãéãããããã¯ãŒã¯ãªãœãŒã¹ãè§£æŸããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã
- ããŒã¿ããŒã¹æ¥ç¶ïŒusing宣èšã䜿çšããŠããŒã¿ããŒã¹æ¥ç¶ãéããæ¥ç¶ãªãŒã¯ãé²ããããŒã¿ããŒã¹ã®ããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã
- ã¹ããªãŒã ïŒå ¥åºåã¹ããªãŒã ã管çãã䜿çšåŸã«ããããéããããããšãä¿èšŒããŠãããŒã¿ã®æå€±ãç Žæãé²ããŸãã
- å€éšã©ã€ãã©ãªïŒå€ãã®å€éšã©ã€ãã©ãªã¯ãæç€ºçã«è§£æŸããå¿ èŠããããªãœãŒã¹ãå²ãåœãŠãŸããusing宣èšã䜿çšããŠãããã®ãªãœãŒã¹ã广çã«ç®¡çã§ããŸããäŸãã°ãã°ã©ãã£ãã¯ã¹APIãããŒããŠã§ã¢ã€ã³ã¿ãŒãã§ãŒã¹ããŸãã¯ç¹å®ã®ã¡ã¢ãªå²ãåœãŠãšã®å¯Ÿè©±ãªã©ã§ãã
'Using'å®£èš vs. åŸæ¥ã®ãªãœãŒã¹ç®¡çæè¡
'using'宣èšãããã€ãã®åŸæ¥ã®ãªãœãŒã¹ç®¡çæè¡ãšæ¯èŒããŠã¿ãŸãããïŒ
ã¬ããŒãžã³ã¬ã¯ã·ã§ã³
ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã¯ãã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠäœ¿çšãããªããªã£ãã¡ã¢ãªãã·ã¹ãã ãååããèªåã¡ã¢ãªç®¡çã®äžåœ¢æ ã§ããã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã¯ã¡ã¢ãªç®¡çãç°¡çŽ åããŸãããé確å®çã§ããã¬ããŒãžã³ã¬ã¯ã¿ããã€å®è¡ããããªãœãŒã¹ãè§£æŸããããæ£ç¢ºã«ç¥ãããšã¯ã§ããŸãããããã«ããããªãœãŒã¹ãé·æéä¿æããããšãªãœãŒã¹ãªãŒã¯ã«ã€ãªããå¯èœæ§ããããŸããããã«ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã¯äž»ã«ã¡ã¢ãªç®¡çãæ±ãããã¡ã€ã«ãã³ãã«ããããã¯ãŒã¯æ¥ç¶ãªã©ã®ä»ã®çš®é¡ã®ãªãœãŒã¹ã¯åŠçããŸããã
Try...Finally ãããã¯
try...finally
ãããã¯ã¯ãäŸå€ãã¹ããŒããããã©ããã«é¢ãããã³ãŒããå®è¡ããã¡ã«ããºã ãæäŸããŸããããã䜿çšããŠãæ£åžžãªã·ããªãªãšäŸå€çãªã·ããªãªã®äž¡æ¹ã§ãªãœãŒã¹ãè§£æŸãããããšãä¿èšŒã§ããŸããããããtry...finally
ãããã¯ã¯ãç¹ã«è€æ°ã®ãªãœãŒã¹ãæ±ãå Žåã«åé·ã§ãšã©ãŒãçºçãããããªãå¯èœæ§ããããŸããfinally
ãããã¯ãæ£ããå®è£
ããããã¹ãŠã®ãªãœãŒã¹ãé©åã«è§£æŸãããããšã確èªããå¿
èŠããããŸãããŸãããã¹ãããã`try...finally`ãããã¯ã¯ããã«èªã¿ã«ãããç¶æããã®ãé£ãããªãå¯èœæ§ããããŸãã
æåã§ã®ç Žæ£
dispose()
ãŸãã¯åçã®ã¡ãœãããæåã§åŒã³åºãããšãããªãœãŒã¹ã管çããããäžã€ã®æ¹æ³ã§ããããã«ã¯ãç Žæ£ã¡ãœãããé©åãªã¿ã€ãã³ã°ã§åŒã³åºãããããã«æ³šææ·±ã泚æãæãå¿
èŠããããŸããç Žæ£ã¡ãœããã®åŒã³åºããå¿ããããããªãœãŒã¹ãªãŒã¯ã«ã€ãªããå¯èœæ§ããããŸããããã«ãæåã§ã®ç Žæ£ã¯ãäŸå€ãã¹ããŒãããå Žåã«ãªãœãŒã¹ãè§£æŸãããããšãä¿èšŒããŸããã
å¯Ÿç §çã«ã'using'宣èšã¯ããªãœãŒã¹ã管çããããã®ãã確å®çã§ãç°¡æœã§ãä¿¡é Œæ§ã®é«ãæ¹æ³ãæäŸããŸãããããã¯ãäŸå€ãã¹ããŒãããå Žåã§ããäžèŠã«ãªã£ããšãã«ãªãœãŒã¹ãè§£æŸãããããšãä¿èšŒããŸãããŸããå®åçãªã³ãŒããåæžããã³ãŒãã®å¯èªæ§ãåäžãããŸãã
'Using'宣èšã®é«åºŠãªã·ããªãª
åºæ¬çãªäœ¿çšæ³ãè¶ ããŠã'using'宣èšã¯ããè€éãªã·ããªãªã§ãªãœãŒã¹ç®¡çæŠç¥ã匷åããããã«äœ¿çšã§ããŸãã
æ¡ä»¶ä»ãç Žæ£
ç¹å®ã®æ¡ä»¶ã«åºã¥ããŠãªãœãŒã¹ãæ¡ä»¶ä»ãã§ç Žæ£ãããå ŽåããããŸããããã¯ã[Symbol.dispose]()
ã¡ãœããå
ã®ç Žæ£ããžãã¯ãif
ã¹ããŒãã¡ã³ãã§ã©ããããããšã§å®çŸã§ããŸãã
class ConditionalResource {
private shouldDispose: boolean;
constructor(shouldDispose: boolean) {
this.shouldDispose = shouldDispose;
}
[Symbol.dispose]() {
if (this.shouldDispose) {
console.log("Conditional resource disposed");
}
else {
console.log("Conditional resource not disposed");
}
}
}
{
using resource1 = new ConditionalResource(true);
using resource2 = new ConditionalResource(false);
}
// Output:
// Conditional resource disposed
// Conditional resource not disposed
éåæã®ç Žæ£
'using'宣èšã¯æ¬è³ªçã«åæçã§ãããç Žæ£äžã«éåææäœïŒäŸïŒãããã¯ãŒã¯æ¥ç¶ãéåæã§éããïŒãå®è¡ããå¿
èŠãããã·ããªãªã«ééãããããããŸããããã®ãããªå Žåãæšæºã®[Symbol.dispose]()
ã¡ãœããã¯åæçã§ãããããå°ãç°ãªãã¢ãããŒããå¿
èŠã«ãªããŸãããããåŠçããããã«ã©ãããŒã代æ¿ãã¿ãŒã³ã䜿çšããããšãæ€èšããæšæºã®'using'æ§æèŠçŽ ã®å€éšã§Promiseãasync/awaitã䜿çšããããéåæç Žæ£çšã®ä»£æ¿Symbol
ã䜿çšããå¯èœæ§ããããŸãã
æ¢åã®ã©ã€ãã©ãªãšã®çµ±å
IDisposable
ãã¿ãŒã³ãçŽæ¥ãµããŒãããŠããªãæ¢åã®ã©ã€ãã©ãªãæ±ãå Žåãã©ã€ãã©ãªã®ãªãœãŒã¹ãã©ãããã[Symbol.dispose]()
ã¡ãœãããæäŸããã¢ããã¿ã¯ã©ã¹ãäœæã§ããŸããããã«ããããããã®ã©ã€ãã©ãªã'using'宣èšãšã·ãŒã ã¬ã¹ã«çµ±åã§ããŸãã
Using宣èšã®ãã¹ããã©ã¯ãã£ã¹
'using'宣èšã®å©ç¹ãæå€§åããããã«ã以äžã®ãã¹ããã©ã¯ãã£ã¹ã«åŸã£ãŠãã ããïŒ
- IDisposableãã¿ãŒã³ãæ£ããå®è£
ããïŒã¯ã©ã¹ã
IDisposable
ãã¿ãŒã³ãæ£ããå®è£ ãã[Symbol.dispose]()
ã¡ãœããã§ãã¹ãŠã®ãªãœãŒã¹ãé©åã«è§£æŸããããã«ããŠãã ããã - ç Žæ£äžã®ãšã©ãŒãåŠçããïŒ
[Symbol.dispose]()
ã¡ãœããå ã§try...catch
ãããã¯ã䜿çšããŠãç Žæ£äžã«çºçããå¯èœæ§ã®ãããšã©ãŒãåŠçããŸãã - "using"ãããã¯ããäŸå€ãã¹ããŒããã®ãé¿ããïŒusing宣èšã¯äŸå€ãåŠçããŸãããããããé©åã«åŠçããäºæããã¹ããŒããªãæ¹ãè¯ãå®è·µã§ãã
- 'Using'宣èšãäžè²«ããŠäœ¿çšããïŒãã¹ãŠã®ãªãœãŒã¹ãé©åã«ç®¡çãããããã«ãã³ãŒãå šäœã§'using'宣èšãäžè²«ããŠäœ¿çšããŸãã
- ç Žæ£ããžãã¯ãã·ã³ãã«ã«ä¿ã€ïŒ
[Symbol.dispose]()
ã¡ãœããã®ç Žæ£ããžãã¯ãã§ããã ãã·ã³ãã«ã§çŽæ¥çã«ä¿ã¡ãŸãã倱æããå¯èœæ§ã®ããè€éãªæäœãå®è¡ããã®ã¯é¿ããŠãã ããã - ãªã³ã¿ãŒã®äœ¿çšãæ€èšããïŒ'using'宣èšã®é©åãªäœ¿çšã匷å¶ããæœåšçãªãªãœãŒã¹ãªãŒã¯ãæ€åºããããã«ãªã³ã¿ãŒã䜿çšããŸãã
TypeScriptã«ããããªãœãŒã¹ç®¡çã®æªæ¥
TypeScriptã«'using'宣èšãå°å ¥ãããããšã¯ããªãœãŒã¹ç®¡çã«ããã倧ããªäžæ©ã§ããTypeScriptãé²åãç¶ããã«ã€ããŠããã®åéã§ãããªãæ¹åãèŠãããããšãæåŸ ã§ããŸããäŸãã°ãå°æ¥ã®ããŒãžã§ã³ã®TypeScriptã§ã¯ãéåæã®ç Žæ£ãããæŽç·ŽããããªãœãŒã¹ç®¡çãã¿ãŒã³ã®ãµããŒããå°å ¥ãããå¯èœæ§ããããŸãã
çµè«
'Using'宣èšã¯ãTypeScriptã«ããã確å®ãªãªãœãŒã¹ç®¡çã®ããã®åŒ·åãªããŒã«ã§ãããããã¯ãåŸæ¥ã®ææ³ãšæ¯èŒããŠãããã¯ãªãŒã³ã§ãããç°¡æœã§ãããä¿¡é Œæ§ã®é«ããªãœãŒã¹ç®¡çæ¹æ³ãæäŸããŸãã'using'宣èšã䜿çšããããšã§ãTypeScriptã¢ããªã±ãŒã·ã§ã³ã®å ç¢æ§ãããã©ãŒãã³ã¹ãããã³ä¿å®æ§ãåäžãããããšãã§ããŸãããã®çŸä»£çãªãªãœãŒã¹ç®¡çã¢ãããŒããæ¡çšããããšã¯ãééããªãããå¹ççã§ä¿¡é Œæ§ã®é«ããœãããŠã§ã¢éçºå®è·µã«ã€ãªããã§ãããã
IDisposable
ãã¿ãŒã³ãå®è£
ããusing
ããŒã¯ãŒããæŽ»çšããããšã§ãéçºè
ã¯ãªãœãŒã¹ã確å®çã«è§£æŸãããããšãä¿èšŒããã¡ã¢ãªãªãŒã¯ãé²ããã¢ããªã±ãŒã·ã§ã³å
šäœã®å®å®æ§ãåäžãããããšãã§ããŸããusing
宣èšã¯TypeScriptã®åã·ã¹ãã ãšã·ãŒã ã¬ã¹ã«çµ±åãããããŸããŸãªã·ããªãªã§ãªãœãŒã¹ã管çããããã®ã¯ãªãŒã³ã§å¹ççãªæ¹æ³ãæäŸããŸããTypeScriptãšã³ã·ã¹ãã ãæé·ãç¶ããã«ã€ããŠã'using'宣èšã¯å
ç¢ã§ä¿¡é Œæ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããäžã§ãŸããŸãéèŠãªåœ¹å²ãæããããã«ãªãã§ãããã